/*
 * 本头文件是参照 qnamespace.h写的，主要是仿照QT使用枚举类型数据这种做法
 * 来存放项目中使用到常量数据，这样做有两个原因：
 * 1）对于驱动的访问，可以做到完全屏蔽硬件信息，无需关注任何细节问题,大大减少应用开发人员的工作量
 * 2）对于使用频率比较高的常量数据，可以使用枚举类型来存放这些自定义的常量数据，方便对整个工程文件
 *    的管理，使得工程源码清晰明了.
 *
 */

#ifndef DEVNAMESPACE_H
#define DEVNAMESPACE_H

#include <QtCore/qglobal.h> //这里好像添不添加都没有影响,同样是参照 qnamespace.h 而写上来的


/*
 * 这是我自己定义的 "Ros" 命名空间，存放本工程所有的枚举数据类型，
 * 包含本头文件(#include "mynamespace.h")即可使用!
*/
namespace  Ros{
#ifdef D_LANGYUXIN_V2
//郎宇欣２代硬件
enum  E_KEY {

    // ////////  Left  //////////
    E_KEY_NONE =0,
    E_KEY_START_RUN        =   14,
    E_KEY_STOP        =   28,
    E_KEY_CEASE        =   0x1111108,//NOP
    E_KEY_RETURN_ZERO        =   0x1111110,//NOP
    E_KEY_PALY_VOICE        =   0x1111140,//NOP
    E_KEY_LOCK        =   64,


    // ////////  Right  //////////
    E_KEY_AXIS1_N        =   52,
    E_KEY_AXIS1_P       =   68,

    E_KEY_AXIS2_N       =   2,
    E_KEY_AXIS2_P       =   3,

    E_KEY_AXIS3_N       =   4,
    E_KEY_AXIS3_P       =   5,

    E_KEY_AXIS4_N       =   6,
    E_KEY_AXIS4_P       =   7,

    E_KEY_AXIS5_N       =   8,
    E_KEY_AXIS5_P       =   9,

    E_KEY_AXIS6_N       =   10,
    E_KEY_AXIS6_P       =   11,

    E_KEY_RIGHT_FUN1_SHIFT       =   87,
    E_KEY_RIGHT_FUN2_LMOVE       =   103,
    E_KEY_RIGHT_FUN3_JMOVE       =   88,

    E_KEY_Vel_INCREASE=106,
    E_KEY_Vel_DECREASE=108,
    E_KEY_STEP_MODE_CHANGE=105,
    E_KEY_JOG_COORDINATE_CHANGE=109,
    E_KEY_JOG_COORDINATE_TOOL=104,
    E_KEY_CLEAR_MESSAGE=63,
    E_KEY_SERVO_ON=1,
    E_KEY_ROBOT_CHANGE=59,

} ;
#else
//郎宇欣１代硬件
enum  E_KEY {

    // ////////  Left  //////////
    E_KEY_NONE =0,
    E_KEY_START_RUN        =   187,
    E_KEY_STOP        =   188,
    E_KEY_CEASE        =   0x1111108,//NOP
    E_KEY_RETURN_ZERO        =   0x1111110,//NOP
    E_KEY_PALY_VOICE        =   0x1111140,//NOP
    E_KEY_LOCK        =   67,


    // ////////  Right  //////////
    E_KEY_AXIS1_N        =   186,
    E_KEY_AXIS1_P       =   189,

    E_KEY_AXIS2_N       =   190,
    E_KEY_AXIS2_P       =   193,

    E_KEY_AXIS3_N       =   191,
    E_KEY_AXIS3_P       =   192,

    E_KEY_AXIS4_N       =   194,
    E_KEY_AXIS4_P       =   202,

    E_KEY_AXIS5_N       =   200,
    E_KEY_AXIS5_P       =   201,

    E_KEY_AXIS6_N       =   185,
    E_KEY_AXIS6_P       =   184,

    E_KEY_RIGHT_FUN1_SHIFT       =   207,
    E_KEY_RIGHT_FUN2_LMOVE       =   66,
    E_KEY_RIGHT_FUN3_JMOVE       =   183,

    E_KEY_Vel_INCREASE=88,
    E_KEY_Vel_DECREASE=203,
    E_KEY_STEP_MODE_CHANGE=65,
    E_KEY_JOG_COORDINATE_CHANGE=68,
    E_KEY_JOG_COORDINATE_TOOL=87,
    E_KEY_CLEAR_MESSAGE=64,
    E_KEY_SERVO_ON=59,
    E_KEY_ROBOT_CHANGE=60,

} ;
#endif



    /*
     * 矩阵键盘的三种状态，有按下(keyDown)，松开(keyUp)，长按(keyKeepDown)三种状态;
     * 但是实际上就算是不使用这个长按(keyKeepDown)状态，也可以达到我们的功能需求，
     * 编程时请根据我给出参照示例程序的用法来使用，如果出现异常问题或者有其他需求，请告诉我，
     * 然后我再调整接口！！
     *
     */
    enum  keyStatus{

        keyUp           =  0,
        keyDown         = 1,
        keyKeepDown     = 2


    };
    //自定义编码器的枚举，仿照QT封装好，方便编程使用
    enum encoder {
        forward     = 467 ,     //注意:当 value值是0 的时候，是由这个正转这个“键值”接收的
        back        = 466       // 反转
    };



}

#endif // DEVNAMESPACE_H
